\section{【背景】分段机制的特权限制}\label{ux80ccux666fux5206ux6bb5ux673aux5236ux7684ux7279ux6743ux9650ux5236}

在保护模式下，特权级总共有4个，编号从0（最高特权）到3（最低特权）。三类主要的资源，即内存、I/O地址空间以及特权指令需要保护。特权指令如果被用户态的程序所使用，就会受到保护模式的保护机制限制，导致一个故障中断（general-protection
exception）。对内存和I/O端口的访问存在类似的特权级限制。为了更好地理解不同特权级，这里先介绍三个概念

\begin{itemize}
\item
  CPL：当前特权级（Current Privilege Level)
  保存在CS段寄存器（选择子）的最低两位，CPL就是当前活动代码段的特权级，并且它定义了当前所执行程序的特权级别）
\item
  DPL：描述符特权（Descriptor Privilege Level）
  存储在段描述符中的权限位，用于描述对应段所属的特权等级，也就是段本身真正的特权级。
\item
  RPL：请求特权级RPL(Request Privilege Level)
  RPL保存在选择子的最低两位。RPL说明的是进程对段访问的请求权限，意思是当前进程想要的请求权限。RPL的值由程序员自己来自由的设置，并不一定RPL\textgreater{}=CPL，但是当RPL\textless{}CPL时，实际起作用的就是CPL了，因为访问时的特权检查是判断：max(RPL,CPL)\textless{}=DPL是否成立，所以RPL可以看成是每次访问时的附加限制，RPL=0时附加限制最小，RPL=3时附加限制最大。
\end{itemize}
